<?php
define('FACTORES', 147);
define('PERFIL', 148);


class Factores extends CI_Controller
{
    
    function Factores()
	{
        parent::__construct();
		date_default_timezone_set('America/El_Salvador');
		$this->load->helper('url');
		$this->load->helper('form');
		$this->load->model('seguridad_model');
		$this->load->model('factores_model');
		
		if(!$this->session->userdata('id_usuario')){
		 	redirect('index.php/sessiones');
		}
    }
	
	function index()
	{	
	
		$this->lista();


	}
	
	function lista($estado_transaccion=NULL,$accion=NULL)
	{
		$data['id_modulo']=FACTORES;
		$data['estado_transaccion']=$estado_transaccion;
		consultar_permiso(FACTORES);
		switch ($accion) {
			case 1:
				$data['msj']="El factor se ha guardado exitosamente";
				break;
			case 2:
				$data['msj']="El factor  se ha modificado exitosamente";
				break;
			case 3:
				$data['msj']="El factor se ha eliminado";
				break;
			default:
				$data['msj']=NULL;
				break;
		}
		$data['d']=$this->factores_model->factores();
		pantalla('factores/factores', $data);

	}

	function DN_factor()
	{
		consultar_permiso(FACTORES);
		$this->load->view('factores/DN_factor');

	}
	function DM_factor($id_factor)
	{	
		consultar_permiso(FACTORES);
		$data['d']=$this->factores_model->factores($id_factor);			
		$this->load->view('factores/DM_factor',$data);

	}
	function eliminar_factor($id_factor)
	{		
			consultar_permiso(FACTORES);
			$this->db->trans_start();			
			$this->factores_model->eliminar_factor($id_factor);		
			bitacora("Eliminación de factor id_factor $id_factor",5);	
			$this->db->trans_complete();
			$tr=($this->db->trans_status()===FALSE)?0:1;
			ir_a('index.php/factores/lista/'.$tr.'/3');	
		
	}
	function actualizar_factor()
	{
				consultar_permiso(FACTORES);			
				$this->db->trans_start();			
				$this->factores_model->actualizar_factor($_POST);			
				$id_factor=$_POST['id_factor'];
				bitacora("Actualización de factor id_factor $id_factor",4);	
				$this->db->trans_complete();
				$tr=($this->db->trans_status()===FALSE)?0:1;
				ir_a('index.php/factores/lista/'.$tr.'/2');	
	}
	function guardar_factor()
	{
				consultar_permiso(FACTORES);
				$this->db->trans_start();			
				$id_factor=$this->factores_model->guardar_factor($_POST);			
				bitacora("Inserción de factor id_factor $id_factor",3);	
				$this->db->trans_complete();
				$tr=($this->db->trans_status()===FALSE)?0:1;
				ir_a('index.php/factores/lista/'.$tr.'/1');	
	}

	function perfiles($estado_transaccion=NULL,$accion=NULL)
	{
		$data['id_modulo']=PERFIL;
		consultar_permiso(PERFIL);
		$data['estado_transaccion']=$estado_transaccion;
				switch ($accion) {
			case 1:
				$data['msj']="El perfil se ha guardado exitosamente";
				break;
			case 2:
				$data['msj']="El perfil  se ha modificado exitosamente";
				break;
			case 3:
				$data['msj']="El perfil se ha eliminado";
				break;
			case 4:
				$data['msj']="El perfil se ha copiado";
				break;
			default:
				$data['msj']=NULL;
				break;
		}
		
		$data['d']=	$this->factores_model->perfiles();
		pantalla('factores/perfiles', $data);
	}

	function nuevo_perfil($id_perfil=NULL)	{
		
		$data['id_modulo']=PERFIL;
		consultar_permiso(PERFIL);
		if ($id_perfil==NULL) {
			$data['info'] = array('id_perfil' => 0,'nombre'=>'','descripcion'=>'','id_categoria'=>0 );
			$data['preguntas']='[]';
		} else {
			$data['info']=$this->factores_model->perfiles($id_perfil);
			$data['preguntas']=json_encode($this->factores_model->preguntas($id_perfil));
		}
		
		$data['factores']=$this->factores_model->factores();
		$data['categorias']=$this->factores_model->categorias();
		//prueba_v($data);
		pantalla('factores/perfil', $data);
	}
	function guardar_perfil()
	{
		consultar_permiso(PERFIL);
		$this->db->trans_start();	
		$id_usuario=$this->session->userdata('id_usuario');
					

				extract($_POST);
				$_POST['id_usuario']=$id_usuario;

			if (isset($id_perfil) && $id_perfil==0 ) { //es un nuevo perfil

					$id_perfil=$this->factores_model->guardar_perfil($_POST);
					for ($i=0; $i <sizeof($factores) ; $i++) { 
							$info = array('id_factor' => $factores[$i],
										 'id_perfil'=>$id_perfil,
										 'pregunta'=>$preguntas[$i],
										  'ponderacion'=>$ponderaciones[$i]);
							$this->factores_model->guardar_pregunta($info);		
						}
					bitacora("Inserción de perfil id_perfil $id_perfil",3);	
					$accion="/1";
			} elseif(isset($id_perfil)) { //modificar
				
				if (isset($eliminados)) {

					foreach($eliminados as $k) {
						$this->factores_model->eliminar_pregunta($k);
					}
				}
				$this->factores_model->actualizar_perfil($_POST);								
				
				for ($i=0; $i <sizeof($factores) ; $i++) { 

							$info = array('id_factor' => $factores[$i],
										 'id_perfil'=>$id_perfil,
										 'pregunta'=>$preguntas[$i],
										 'ponderacion'=>$ponderaciones[$i],
										 'id_pregunta'=>$id_preguntas[$i]);
								if ($id_preguntas[$i]==0) {//si es nuevo se guarda como nueva pregunta
									$this->factores_model->guardar_pregunta($info);		

								} else { //cuando solo es actualizacion

									$this->factores_model->actualizar_pregunta($info);
								}							

						}

					$accion="/2";
					bitacora("Actualización de perfil id_perfil $id_perfil",4);	
			}


		$this->db->trans_complete();
		$tr=($this->db->trans_status()===FALSE)?0:1;
	ir_a('index.php/factores/perfiles/'.$tr.$accion);	
	}
	function copiar_perfil($id='')
	{	
		$id_usuario=$this->session->userdata('id_usuario');
		consultar_permiso(PERFIL);
		$this->db->trans_start();	
		//extraer la informacion
		$perfil=$this->factores_model->perfiles($id);
		$preguntas=$this->factores_model->preguntas($id);
		$perfil['nombre'].=" (Copia) ".date('d-M-Y');
		$perfil['id_usuario']=$id_usuario;
		$perfil['id_perfil_origen']=$id;
		//insertarla como un nuevo registro


			$id_perfil=$this->factores_model->guardar_perfil($perfil);
			
			foreach ($preguntas as $info ) {
				$info['id_perfil']=$id_perfil;
				$this->factores_model->guardar_pregunta($info);						
			}
					
		bitacora("Copia de perfil desde id_perfil $id a id_perfil $id_perfil",3);	
		
		$this->db->trans_complete();
		$tr=($this->db->trans_status()===FALSE)?0:1;
		ir_a('index.php/factores/perfiles/'.$tr.'/4');	
	}
	function eliminar_perfil($id="")
	{
			consultar_permiso(PERFIL);
			$bandera=FALSE;
			$this->db->trans_start();	
			
			if(!$this->factores_model->verificar_uso_perfil($id)){
				$this->factores_model->eliminar_perfil($id);					
			}else{
				 $bandera=true;
			}


			bitacora("Eliminación de perfil id_perfil $id",5);				
			
			$tr=($this->db->trans_status()===FALSE)?0:1;
			$tr=($bandera && $tr )?0:$tr; ///solo cuando  se elimino el perfil va a enviar trasaccion correcta
			ir_a('index.php/factores/perfiles/'.$tr.'/3');	
	}

}
?>
